package day03.io;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.ObjectInputStream;

//对象反序列化
public class OISDemo {
    public static void main(String[] args) throws IOException, ClassNotFoundException {
        FileInputStream fis=new FileInputStream("person.obj");
        ObjectInputStream ois=new ObjectInputStream(fis);
        /*反序列化时可能抛出以下异常：
        * java.io.InvalidClassException
        * 原因：
        * 读取的这个对象的版本号与当前Person类的版本号不一致造成的
        * 这是因为该对象写入文件后,Person类修改过，所以文件里的对象版本号与当前的版本号不一致了
        * 解决：
        * 可以自行制定Person的版本号，这样一来就算Person类修改过，我们不修改版本
        * 号，那么以前用这个版本号写出的对象还是可以读取回来的。否则当前类会被系统
        * 生成一个版本号，这导致该类只要改过内容版本号一定改变！
        * */
        Person p=(Person)ois.readObject();
        System.out.println(p);
        ois.close();
    }
}
